feat: complete GeneralUpdate Skill CodeGen v2 — 7 skills, BM25 search, 336 codegen combos, CLI#15
Merged
Merged
Conversation
This PR delivers a comprehensive upgrade transforming the skill suite from
a documentation-driven reference into an automated development toolkit.
- Parameterized code generator (336 combinations: 6 strategies x 7 frameworks x 2 Bowl x 4 scenes)
- BM25 search engine with 51 known issues database (8C + 11H + 20M + 12L)
- CLI skeleton: gskill init/uninstall/generate/versions/update (5 commands)
- Multi-platform support: 10 AI platform configs (Claude, Cursor, Windsurf, etc.)
- Single-command sync: _sync_all.py with --apply/--verify modes
- Root SKILL.md: developer roadmap, 5-question decision tree, anti-patterns
- All 5 sub-skill SKILL.md: narrative workflows, pre-delivery checklists, anti-pattern tables
- CLAUDE.md: AI agent development guide
- Architecture docs: src -> CLI sync rules
- Step-by-step narrative workflows (Step 1 -> Step 2 -> Step 3)
- User requirements extraction templates in every SKILL.md
- Pre-Delivery Checklists + Anti-Pattern lists for every sub-skill
- Structured output format (decision reasons + warnings + checklist)
- generalupdate-migration: v9.x -> v10 / dev-branch -> stable migration path
- generalupdate-security-audit: 14-point security audit matrix
- CI workflow: Python search test, codegen validation, .NET build, TypeScript check
- Release workflow: full validate -> changelog -> GitHub Release
- Fixed Dispatcher ambiguity in MVVM listener templates
- Fixed WinForms 'this' scope in event listeners
- Fixed MAUI missing using declarations
- Fixed CLI init only installed 1 skill (now installs all 7)
- Fixed CLI uninstall targeted scope
- Fixed project-scaffold {{PLACEHOLDER}} leakage
Co-Authored-By: Claude <noreply@anthropic.com>
18 tasks
There was a problem hiding this comment.
Pull request overview
This pull request turns the GeneralUpdate documentation set into a distributable “skill suite” with automated code generation, troubleshooting search, and a multi-platform installer CLI, plus release automation and sync tooling.
Changes:
- Adds a Node/TypeScript CLI (
gskill) to install/update/uninstall the skill suite across multiple AI assistant folder layouts. - Introduces a BM25-based troubleshooting search engine (Python) with CSV-backed issue/strategy databases and tests.
- Adds/updates skill content, templates, scaffolds, and release/sync automation to package everything consistently.
Reviewed changes
Copilot reviewed 120 out of 121 changed files in this pull request and generated 19 comments.
Show a summary per file
| File | Description |
|---|---|
| skill.json | Skill suite metadata for installers/registries |
| RULES.md | Centralized GeneralUpdate API/rules reference |
| docs/architecture-data-flow.md | Documents source-of-truth + sync model |
| cli/tsconfig.json | TypeScript build configuration for CLI |
| cli/package.json | CLI package definition and deps |
| cli/src/index.ts | CLI entrypoint wiring (commands) |
| cli/src/types/index.ts | Shared CLI types and AI/platform enums |
| cli/src/utils/template.ts | Installs skill assets into target dirs |
| cli/src/utils/logger.ts | CLI logging helpers |
| cli/src/utils/github.ts | GitHub releases fetch/download helpers |
| cli/src/utils/extract.ts | Zip extraction + folder copy utilities |
| cli/src/utils/detect.ts | Detects installed AI assistant dirs |
| cli/src/commands/init.ts | Install command implementation |
| cli/src/commands/uninstall.ts | Uninstall command implementation |
| cli/src/commands/generate.ts | Python codegen invocation wrapper |
| cli/src/commands/versions.ts | Lists versions from GitHub Releases |
| cli/src/commands/update.ts | Updates installed skill suite |
| cli/assets/templates/base/skill-content.md | Legacy single-skill content template |
| cli/assets/templates/platforms/claude.json | Platform install config (Claude) |
| cli/assets/templates/platforms/cursor.json | Platform install config (Cursor) |
| cli/assets/templates/platforms/windsurf.json | Platform install config (Windsurf) |
| cli/assets/templates/platforms/copilot.json | Platform install config (Copilot) |
| cli/assets/templates/platforms/kiro.json | Platform install config (Kiro) |
| cli/assets/templates/platforms/roocode.json | Platform install config (RooCode) |
| cli/assets/templates/platforms/codex.json | Platform install config (Codex) |
| cli/assets/templates/platforms/gemini.json | Platform install config (Gemini) |
| cli/assets/templates/platforms/continue.json | Platform install config (Continue) |
| cli/assets/templates/platforms/agent.json | Platform install config (Generic agent) |
| cli/assets/skills/generalupdate-init/templates/MinimalIntegration.cs | Minimal integration template (assets) |
| cli/assets/skills/generalupdate-init/templates/FullIntegration.cs | Full integration template (assets) |
| cli/assets/skills/generalupdate-init/templates/generalupdate.manifest.json | Manifest template (assets) |
| cli/assets/skills/generalupdate-init/reference.md | Init skill reference docs (assets) |
| cli/assets/skills/generalupdate-init/project-scaffold/ClientProgram.cs | Client scaffold program (assets) |
| cli/assets/skills/generalupdate-init/project-scaffold/UpgradeProgram.cs | Upgrade scaffold program (assets) |
| cli/assets/skills/generalupdate-init/project-scaffold/ClientApp.csproj | Client scaffold project file (assets) |
| cli/assets/skills/generalupdate-init/project-scaffold/UpgradeApp.csproj | Upgrade scaffold project file (assets) |
| cli/assets/skills/generalupdate-ui/templates/DownloadViewModels.cs | MVVM stateful download VM template |
| cli/assets/skills/generalupdate-ui/templates/WpfDevelopersViewModel.cs | WPFDevelopers VM template |
| cli/assets/skills/generalupdate-ui/templates/WPFDevelopersStyle.xaml | WPFDevelopers window template |
| cli/assets/skills/generalupdate-ui/templates/LayUIStyle.xaml | LayUI WPF window template |
| cli/assets/skills/generalupdate-ui/templates/SemiUrsaClientView.axaml | Avalonia SemiUrsa client UI template |
| cli/assets/skills/generalupdate-ui/templates/SemiUrsaUpgradeView.axaml | Avalonia SemiUrsa upgrade UI template |
| cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml | MAUI update page template |
| cli/assets/skills/generalupdate-ui/templates/MauiUpdatePage.xaml.cs | MAUI VM template |
| cli/assets/skills/generalupdate-strategy/examples/ClientServerStrategy.cs | Client-server strategy example |
| cli/assets/skills/generalupdate-strategy/examples/OssStrategy.cs | OSS strategy example |
| cli/assets/skills/generalupdate-strategy/examples/SilentStrategy.cs | Silent strategy example |
| cli/assets/skills/generalupdate-strategy/examples/DifferentialStrategy.cs | Differential strategy example |
| cli/assets/skills/generalupdate-strategy/examples/CrossVersionStrategy.cs | CVP strategy example |
| cli/assets/skills/generalupdate-strategy/examples/PushStrategy.cs | SignalR push strategy example |
| cli/assets/skills/generalupdate-troubleshoot/SKILL.md | Troubleshooting skill content (assets) |
| cli/assets/skills/generalupdate-troubleshoot/scripts/core.py | BM25 core implementation (assets) |
| cli/assets/skills/generalupdate-troubleshoot/scripts/search.py | BM25 CLI wrapper (assets) |
| cli/assets/skills/generalupdate-troubleshoot/data/strategies.csv | Strategy dataset (assets) |
| cli/assets/skills/generalupdate-migration/SKILL.md | Migration skill content (assets) |
| cli/assets/skills/generalupdate-security-audit/SKILL.md | Security audit skill content (assets) |
| cli/assets/skills/generalupdate-advanced/templates/NamedPipeIPC.cs | IPC reference template (assets) |
| cli/assets/skills/generalupdate-advanced/templates/CustomStrategy.cs | Custom strategy reference (assets) |
| cli/assets/skills/generalupdate-advanced/templates/CustomHooks.cs | Hooks reference (assets) |
| cli/assets/skills/generalupdate-advanced/templates/BowlIntegration.cs | Bowl reference (assets) |
| cli/assets/skills/generalupdate-advanced/reference.md | Advanced reference docs (assets) |
| cli/assets/scripts/core.py | BM25 core (bundled scripts) |
| cli/assets/scripts/search.py | BM25 search entrypoint (bundled scripts) |
| cli/assets/scripts/tests/test_search.py | BM25 unit tests (bundled scripts) |
| cli/assets/scripts/generate/templates/Bootstrap.cs.template | Codegen Bootstrap template (assets) |
| cli/assets/scripts/generate/templates/manifest.json.template | Codegen manifest template (assets) |
| cli/assets/scripts/generate/templates/UpgradeProgram.cs.template | Codegen Upgrade entry template (assets) |
| cli/assets/scripts/generate/templates/listeners_console.cs.template | Codegen listeners (console) |
| cli/assets/scripts/generate/templates/listeners_mvvm.cs.template | Codegen listeners (MVVM) |
| cli/assets/scripts/generate/templates/listeners_winforms.cs.template | Codegen listeners (WinForms) |
| cli/assets/scripts/generate/templates/listeners_maui.cs.template | Codegen listeners (MAUI) |
| cli/assets/scripts/generate/templates/DeploymentChecklist.md.template | Codegen deployment checklist template |
| cli/assets/scripts/generate/templates/IssuesWarning.md.template | Codegen known-issues warning template |
| cli/assets/scripts/generate/templates/bowl_notice.cs.template | Codegen Bowl notice template |
| cli/assets/data/strategies.csv | Strategy dataset (top-level assets) |
| CLAUDE.md | Repository guidance for AI agents |
| .gitignore | Ignores build artifacts and caches |
| .github/workflows/release.yml | Release workflow for CLI + GitHub release |
| .claude/skills/generalupdate-init/SKILL.md | Init skill content (source-of-truth) |
| .claude/skills/generalupdate-init/templates/MinimalIntegration.cs | Minimal integration template (source) |
| .claude/skills/generalupdate-init/templates/FullIntegration.cs | Full integration template (source) |
| .claude/skills/generalupdate-init/templates/generalupdate.manifest.json | Manifest template (source) |
| .claude/skills/generalupdate-init/project-scaffold/ClientProgram.cs | Client scaffold (source) |
| .claude/skills/generalupdate-ui/SKILL.md | UI skill content (source-of-truth) |
| .claude/skills/generalupdate-strategy/SKILL.md | Strategy skill content (source-of-truth) |
| .claude/skills/generalupdate-advanced/SKILL.md | Advanced skill content (source-of-truth) |
| .claude/skills/generalupdate-troubleshoot/SKILL.md | Troubleshoot skill content (source) |
| .claude/skills/generalupdate-troubleshoot/scripts/core.py | BM25 core (source) |
| .claude/skills/generalupdate-troubleshoot/scripts/search.py | BM25 search (source) |
| .claude/skills/generalupdate-troubleshoot/data/strategies.csv | Strategies dataset (source) |
| .claude/skills/generalupdate-migration/SKILL.md | Migration skill content (source) |
| .claude/skills/generalupdate-security-audit/SKILL.md | Security audit skill content (source) |
| .claude/scripts/_sync_all.py | Sync tool from .claude/ to cli/assets/ |
| .claude/scripts/generate/templates/Bootstrap.cs.template | Codegen Bootstrap template (source) |
| .claude/scripts/generate/templates/manifest.json.template | Codegen manifest template (source) |
| .claude/scripts/generate/templates/UpgradeProgram.cs.template | Codegen Upgrade entry template (source) |
| .claude/scripts/generate/templates/listeners_console.cs.template | Codegen listeners (console, source) |
| .claude/scripts/generate/templates/listeners_mvvm.cs.template | Codegen listeners (MVVM, source) |
| .claude/scripts/generate/templates/listeners_winforms.cs.template | Codegen listeners (WinForms, source) |
| .claude/scripts/generate/templates/listeners_maui.cs.template | Codegen listeners (MAUI, source) |
| .claude/scripts/generate/templates/DeploymentChecklist.md.template | Deployment checklist template (source) |
| .claude/scripts/generate/templates/IssuesWarning.md.template | Known-issues warning template (source) |
| .claude/scripts/generate/templates/bowl_notice.cs.template | Bowl notice template (source) |
| .claude-plugin/plugin.json | Claude plugin descriptor |
| .claude-plugin/marketplace.json | Claude marketplace descriptor |
| "name": "generalupdate-skill", | ||
| "displayName": "GeneralUpdate Skill CodeGen", | ||
| "description": "AI-powered skill suite for integrating GeneralUpdate (.NET auto-update) into any .NET application. Generates dual-project scaffolding (Client+Upgrade), full-state update UI (6 frameworks), 6 update strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), and deep troubleshooting (50+ known issues). All templates target NuGet v10.4.6 stable API.", | ||
| "version": "0.0.1-bate.1", |
| { | ||
| "name": "generalupdate-skill", | ||
| "displayName": "GeneralUpdate Skill CodeGen", | ||
| "description": "AI-powered skill suite for integrating GeneralUpdate (.NET auto-update) into any .NET application. Generates dual-project scaffolding (Client+Upgrade), full-state update UI (6 frameworks), 6 update strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), and deep troubleshooting (50+ known issues). All templates target NuGet v10.4.6 stable API.", |
| { | ||
| "name": "generalupdate-skill", | ||
| "description": "Complete .NET auto-update skill suite for GeneralUpdate. 7 skills covering: Bootstrap scaffolding, update UI (6 frameworks), 6 strategies (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl, IPC, AOT), 50+ known issues diagnosis with BM25 search engine, version migration, and security audit. All templates target NuGet v10.4.6 stable.", | ||
| "version": "0.0.1-bate.1", |
| "name": "generalupdate-skill", | ||
| "source": "./", | ||
| "description": "Complete GeneralUpdate (.NET auto-update) integration skill suite. Generates dual-project scaffolding, full-state update UI (6 frameworks), 6 update strategies decision tree (Client-Server/OSS/Silent/Differential/CVP/Push), advanced extension points (Bowl crash daemon, IPC replacement, AOT), BM25-powered troubleshooting search (50+ known issues), v9.x→v10 migration guide, and 14-point security audit matrix. All templates target NuGet v10.4.6 stable API.", | ||
| "version": "0.0.1-bate.1", |
Comment on lines
+99
to
+103
| status = sync_file(src, dst, args.apply, dry_run) | ||
| statuses.append((desc, status)) | ||
| if status.startswith("⚠️"): | ||
| all_ok = False | ||
|
|
Comment on lines
+108
to
+114
| if args.verify and not all_ok: | ||
| print("\n❌ Verify FAILED: some sources are missing") | ||
| sys.exit(1) | ||
|
|
||
| if args.verify: | ||
| print("\n✅ Verify PASSED: all sources are in sync") | ||
| sys.exit(0) |
Comment on lines
+54
to
+60
| run: | | ||
| $scaffoldDir = ".claude/skills/generalupdate-init/project-scaffold" | ||
| $testDir = "C:\tmp\release-verify-scaffold" | ||
| New-Item -ItemType Directory -Path $testDir -Force | Out-Null | ||
| Copy-Item "$scaffoldDir\*" $testDir | ||
| dotnet build "$testDir\ClientApp.csproj" 2>&1 | ||
| if ($LASTEXITCODE -ne 0) { throw "Scaffold build failed" } |
- fix: 'bate' → 'beta' typo in skill.json, plugin.json, marketplace.json - fix: skill.json version desc v10.4.6 → v10.5.0-beta.4 - fix: template.ts missing readFile import, platform path hardcoding - fix: init.ts --ai all now routes to generateAllPlatformFiles - fix: generate.ts command injection (execSync→spawnSync+argv) - fix: extract.ts path injection (exec→execFile) - fix: _sync_all.py filecmp shallow=False + --verify detects NEEDS SYNC - fix: release.yml Windows paths on Linux runner - fix: sync CLI assets after source changes Co-Authored-By: Claude <noreply@anthropic.com
JusterZhu
commented
Jun 16, 2026
JusterZhu
left a comment
Contributor
Author
There was a problem hiding this comment.
All 19 Copilot review comments have been resolved in commit cef16d6:
- ✅ 'bate' → 'beta' typo in skill.json, plugin.json, marketplace.json
- ✅ skill.json version description updated to v10.5.0-beta.4
- ✅ template.ts: added readFile import, platform-specific subdirs (Copilot→.github/prompts/), fixed hardcoded paths
- ✅ init.ts: --ai all now routes to generateAllPlatformFiles
- ✅ generate.ts: replaced execSync+string concat with spawnSync+argument array (injection-safe)
- ✅ extract.ts: replaced exec with execFile for both Powershell Expand-Archive and fallback copies
- ✅ _sync_all.py: filecmp.cmp now uses shallow=False; --verify now exits 1 on NEEDS SYNC
- ✅ release.yml: removed Windows-specific paths, uses
- ✅ CLI assets re-synced after source changes
All 15 search tests still pass. Sync verify passes.
Contributor
Author
|
All 19 Copilot review comments have been resolved in commit cef16d6:
All 15 search tests still pass. Sync verify passes. |
18 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete upgrade from documentation-driven reference into automated development toolkit. Rebased onto latest main (v10.5.0-beta.4 API).
What's Included
🚀 Automation Tools
_sync_all.pywith--apply/--verifymodes📚 Developer Experience
🔬 Extension Skills
generalupdate-migration: v9.x → v10 / dev-branch → stable migrationgeneralupdate-security-audit: 14-point audit matrix🧪 CI/CD
🐛 Bugs Fixed
thisscope, MAUI using, CLI 1-skill install, uninstall scope, placeholder leakageStats
Co-Authored-By: Claude noreply@anthropic.com